<?

class FactoryHelper{
	function __construct(){
		
	}

	/**
	 * Metoda getCollection odpalana jest w DomainModel do pobrania pustej kolekcji modelu
	 *
	 * @param unknown_type $classname
	 * @param unknown_type $suffix
	 * @return ModelCollection $modelCollection
	 */
	static function getCollection($classname, $suffix){
		return FactoryHelper::make($classname, $suffix);
	}
	
	/**
	 * Metoda getFinder zwraca instancje mappera modelu, wywolywana jest w DomainModel
	 *
	 * @param unknown_type $classname
	 * @param unknown_type $suffix
	 * @return ModelMapper $modelMapper
	 */
	
	static function getFinder($classname, $suffix){
		return FactoryHelper::make($classname, $suffix);
	}
	
	/**
	 * metoda make wytwarza obiekty zadanej klasy, moze dostawac suffix i katalog zawierajacy dany plik jesli konieczne
	 *
	 * @param unknown_type $classname
	 * @param unknown_type $suffix
	 * @param unknown_type $classDir
	 * @return Object $anyObject
	 */

	static function make($className, $suffix = null, $classDir = null){
		$filePath = $classDir.$className.$suffix.'.php';

		if (file_exists($filePath))
			require_once($filePath);
			
		if (class_exists($className.$suffix)){
			$obj = new ReflectionClass($className.$suffix);
			return $obj->newInstance();
		}else{
			throw new Exception('Nie można utworzyć obiektu klasy '.$className, 1);
		}
	}
}

?>